home *** CD-ROM | disk | FTP | other *** search
/ Scene 96 / Scene 96 International Edition (Zyklop Software) (Disc 2) (1997).iso / misc / coding / cp2dekit / h / mp.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-12-29  |  5.5 KB  |  229 lines

  1. //***************************************************************************
  2. //
  3. // this file is (c) '94-'96 Niklas Beisert
  4. //
  5. // this file is part of the cubic player development kit.
  6. // you may only use/modify/spread this file under the terms stated
  7. // in the cubic player development kit accompanying documentation.
  8. //
  9. //***************************************************************************
  10.  
  11. #ifndef __MP_H
  12. #define __MP_H
  13.  
  14. #include "gmdinst.h"
  15.  
  16. #define MP_MAXCHANNELS 32
  17.  
  18. struct track
  19. {
  20.   unsigned char *ptr;
  21.   unsigned char *end;
  22. };
  23.  
  24. struct pattern
  25. {
  26.   char name[32];
  27.   unsigned short patlen;
  28.   unsigned short gtrack;
  29.   unsigned short tracks[MP_MAXCHANNELS];
  30. };
  31.  
  32.  
  33. #define MOD_TICK0 1
  34. #define MOD_EXPOFREQ 2
  35. #define MOD_S3M 4
  36. #define MOD_GUSVOL 8
  37. #define MOD_EXPOPITCHENV 16
  38. #define MOD_S3M30 32
  39. #define MOD_MODPAN 0x10000
  40.  
  41. struct module
  42. {
  43.   char name[32];
  44.   char composer[32];
  45.   unsigned long options;
  46.   int channum;
  47.   int instnum;
  48.   int patnum;
  49.   int ordnum;
  50.   int endord;
  51.   int loopord;
  52.   int tracknum;
  53.   int sampnum;
  54.   int modsampnum;
  55.   int envnum;
  56.   instrument *instruments;
  57.   track *tracks;
  58.   envelope *envelopes;
  59.   sampleinfo *samples;
  60.   sample *modsamples;
  61.   pattern *patterns;
  62.   char **message;
  63.   unsigned short *orders;
  64.   void reset();
  65.   void free();
  66.   char allocinstruments();
  67.   char allocsamples();
  68.   char allocmodsamples();
  69.   char alloctracks();
  70.   char allocpatterns();
  71.   char allocenvelopes();
  72.   char allocorders();
  73.   void optimizepatlens();
  74.   void reduceinstruments();
  75.   void reducemessage();
  76.   char reducesamples();
  77.   char loadsamples();
  78.   void removetext();
  79. };
  80.  
  81. struct globinfo
  82. {
  83.   unsigned char speed;
  84.   unsigned char curtick;
  85.   unsigned char tempo;
  86.   unsigned char currow;
  87.   unsigned short patlen;
  88.   unsigned short curpat;
  89.   unsigned short patnum;
  90.   unsigned char globvol;
  91.   unsigned char globvolslide;
  92. };
  93.  
  94. struct chaninfo
  95. {
  96.   unsigned char ins;
  97.   unsigned short smp;
  98.   unsigned char note;
  99.   unsigned char vol;
  100.   unsigned char pan;
  101.   unsigned char notehit;
  102.   unsigned char volslide;
  103.   unsigned char pitchslide;
  104.   unsigned char panslide;
  105.   unsigned char volfx;
  106.   unsigned char pitchfx;
  107.   unsigned char notefx;
  108.   unsigned char fx;
  109. };
  110.  
  111. class binfile;
  112.  
  113. extern "C"
  114. {
  115.   int mpLoadMOD(module &, binfile &);
  116.   int mpLoadMODt(module &, binfile &);
  117.   int mpLoadMODd(module &, binfile &);
  118.   int mpLoadM15(module &, binfile &);
  119.   int mpLoadM15t(module &, binfile &);
  120.   int mpLoadM31(module &, binfile &);
  121.   int mpLoadWOW(module &, binfile &);
  122.   int mpLoadMTM(module &, binfile &);
  123.   int mpLoadS3M(module &, binfile &);
  124.   int mpLoadXM (module &, binfile &);
  125.   int mpLoad669(module &, binfile &);
  126.   int mpLoadULT(module &, binfile &);
  127.   int mpLoadDMF(module &, binfile &);
  128.   int mpLoadOKT(module &, binfile &);
  129.   int mpLoadPTM(module &, binfile &);
  130.   int mpLoadAMS(module &, binfile &);
  131.   int mpLoadMDL(module &, binfile &);
  132.   int mpLoadIT (module &, binfile &);
  133. }
  134. char mpPlayModule(const module &);
  135. void mpStopModule();
  136. void mpSetPosition(signed short pat, signed short row);
  137. void mpGetPosition(unsigned short &pat, unsigned char &row);
  138. void mpGetChanInfo(unsigned char ch, chaninfo &ci);
  139. unsigned short mpGetRealNote(unsigned char ch);
  140. void mpGetGlobInfo(globinfo &gi);
  141. char mpLooped();
  142. void mpSetLoop(unsigned char s);
  143. void mpLockPat(int st);
  144. int mpGetChanSample(int ch, short *buf, int len, int rate);
  145. void mpMute(int ch, int m);
  146. void mpGetRealVolume(int ch, int &l, int &r);
  147. int mpGetChanStatus(int ch);
  148. int mpGetMute(int ch);
  149.  
  150. enum
  151. {
  152.   cmdTempo, cmdSpeed, cmdBreak, cmdGoto, cmdPatLoop, cmdPatDelay, cmdGlobVol, cmdGlobVolSlide, cmdSetChan, cmdFineSpeed
  153. };
  154.  
  155. enum
  156. {
  157.   cmdVolSlideUp, cmdVolSlideDown, cmdRowVolSlideUp, cmdRowVolSlideDown,
  158.   cmdPitchSlideUp, cmdPitchSlideDown, cmdPitchSlideToNote,
  159.   cmdRowPitchSlideUp, cmdRowPitchSlideDown,
  160.   cmdPanSlide, cmdRowPanSlide,
  161.   cmdDelay,
  162.   cmdVolVibrato, cmdVolVibratoSetWave, cmdTremor,
  163.   cmdPitchVibrato, cmdPitchVibratoSetSpeed, cmdPitchVibratoFine,
  164.   cmdPitchVibratoSetWave, cmdArpeggio,
  165.   cmdNoteCut, cmdRetrig,
  166.   cmdOffset,
  167.   cmdPanSurround,
  168.   cmdKeyOff,
  169.   cmdSetEnvPos,
  170.  
  171.   cmdVolSlideUDMF, cmdVolSlideDDMF,
  172.   cmdPanSlideLDMF, cmdPanSlideRDMF,
  173.   cmdPitchSlideUDMF, cmdPitchSlideDDMF, cmdPitchSlideNDMF, cmdRowPitchSlideDMF,
  174.   cmdVolVibratoSinDMF, cmdVolVibratoTrgDMF, cmdVolVibratoRecDMF,
  175.   cmdPanVibratoSinDMF,
  176.   cmdPitchVibratoSinDMF, cmdPitchVibratoTrgDMF, cmdPitchVibratoRecDMF,
  177.  
  178.   cmdLeaveLoop,
  179.  
  180.   cmdPanDepth,
  181.   cmdPanHeight,
  182.  
  183.   cmdChannelVol,
  184.  
  185.   cmdSpecial,
  186.   cmdOffsetHigh,
  187.  
  188.   cmdPlayNote=0x80, cmdPlayIns=0x01, cmdPlayNte=0x02, cmdPlayVol=0x04, cmdPlayPan=0x08, cmdPlayDelay=0x10
  189. };
  190.  
  191. enum
  192. {
  193.   cmdContVolSlide,
  194.   cmdContRowVolSlide,
  195.   cmdContMixVolSlide,
  196.   cmdContMixVolSlideUp,
  197.   cmdContMixVolSlideDown,
  198.   cmdContMixPitchSlideUp,
  199.   cmdContMixPitchSlideDown,
  200.   cmdGlissOn,
  201.   cmdGlissOff
  202. };
  203.  
  204. enum
  205. {
  206.   fxGVSUp=1, fxGVSDown,
  207.   fxVSUp=1, fxVSDown, fxVSUDMF, fxVSDDMF,
  208.   fxPSUp=1, fxPSDown, fxPSToNote, fxPSUDMF, fxPSDDMF, fxPSNDMF,
  209.   fxPnSRight=1, fxPnSLeft, fxPnSLDMF, fxPnSRDMF,
  210.   fxVXVibrato=1, fxVXTremor,
  211.   fxPXVibrato=1, fxPXArpeggio,
  212.   fxPnXVibrato=1,
  213.   fxNXNoteCut=1, fxNXRetrig,
  214.  
  215.   fxVolSlideUp=1, fxVolSlideDown,
  216.   fxRowVolSlideUp, fxRowVolSlideDown,
  217.   fxPitchSlideUp, fxPitchSlideDown, fxPitchSlideToNote,
  218.   fxRowPitchSlideUp, fxRowPitchSlideDown,
  219.   fxPanSlideRight, fxPanSlideLeft,
  220.   fxVolVibrato, fxTremor,
  221.   fxPitchVibrato, fxArpeggio,
  222.   fxNoteCut, fxRetrig,
  223.   fxOffset,
  224.   fxDelay,
  225.   fxPanVibrato
  226. };
  227.  
  228. #endif
  229.